// const EventEmitter = require("events")
//
// class CustomEvent extends EventEmitter {
//
// }
//
// const ce = new CustomEvent()
//
// ce.on('test',()=>{
//     console.log('this is a test')
// })
//
// setInterval(()=>{
//     ce.emit('test')
// },500)

// 2、传递参数
const EventEmitter = require("events")

// class CustomEvent extends EventEmitter {
//
// }
//
// const ce = new CustomEvent()
//
// ce.on('error',(err,now)=>{
//     console.log(err)
//     console.log(now)
// })
//
// ce.emit('error', new Error('test err'), Date.now())

// 事件只触发一次
class TestEvent extends EventEmitter{
}
const e = new TestEvent()
// 只触发一次
const fn1 = function(){
    console.log('fn1')
}
const fn2 = function(){
    console.log('fn2')
}
e.on('test',fn1)
e.on('test',fn2)

setInterval(()=>{
    e.emit('test')
}, 500)
setTimeout(() => {
    // 移除事件
    e.removeListener('test', fn1)
},2000)

setTimeout(()=>{
    e.removeAllListeners('test')
},4000)
